package Interfaz;

import java.util.ArrayList;
import java.util.List;

import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.swt.events.SelectionAdapter;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.graphics.Point;
import org.eclipse.swt.graphics.Rectangle;
import org.eclipse.swt.widgets.Text;
import org.eclipse.swt.SWT;
import org.eclipse.swt.widgets.Event;
import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Combo;
import org.eclipse.swt.widgets.Listener;
import org.eclipse.swt.widgets.Monitor;
import org.eclipse.swt.widgets.Table;
import org.eclipse.swt.widgets.TableItem;
import org.eclipse.swt.widgets.TableColumn;

import Persistencia.DAO.DAOUsuario;
import Persistencia.Entidad.Competencia;
import Persistencia.Entidad.Usuario;


/**
 * CU003 - Listar competencias deportivas
 * @author 
 */
public class CU003 {

	protected Shell shlBuscarCompetencias;
	private Text text;
	private Table table;
	
	private Usuario usuario;
	
	private Principal pantallaAnterior;
	private CU003 myself;
	
	private ArrayList<Integer> idCompetencia = new ArrayList<Integer>();
	
	public CU003(int idUsuario, Principal principal) {
		DAOUsuario daoUsuario = new DAOUsuario();
		usuario = daoUsuario.getUsuario(idUsuario);
		pantallaAnterior = principal;
		myself = this;
	}

	/**
	 * Open the window.
	 */
	public void open() {
		Display display = Display.getDefault();
		createContents();
		
		// Centrar ventana
		Monitor primary = display.getPrimaryMonitor();
		Rectangle bounds = primary.getBounds();
		Rectangle rect = shlBuscarCompetencias.getBounds();	    
		int x = bounds.x + (bounds.width - rect.width) / 2;
		int y = bounds.y + (bounds.height - rect.height) / 2;	    
		shlBuscarCompetencias.setLocation(x, y);
		
		Button btnModalidad = new Button(shlBuscarCompetencias, SWT.CHECK);
		btnModalidad.setBounds(10, 125, 75, 16);
		btnModalidad.setText("Modalidad:");
		
		Combo combo = new Combo(shlBuscarCompetencias, SWT.READ_ONLY);
		//combo.setItems(new String[] {"Eliminatorias Doble", "Eliminatorias Simple", "Liga"});
		combo.setBounds(91, 123, 136, 23);
		
		Button btnEstado = new Button(shlBuscarCompetencias, SWT.CHECK);
		btnEstado.setBounds(10, 165, 55, 16);
		btnEstado.setText("Estado:");
		
		Combo combo_1 = new Combo(shlBuscarCompetencias, SWT.READ_ONLY);
		//combo_1.setItems(new String[] {"En juego", "Finalizada", "Programada"});
		combo_1.setBounds(71, 163, 128, 23);
		
		Button btnBuscar = new Button(shlBuscarCompetencias, SWT.NONE);
		btnBuscar.setText("Buscar");
		btnBuscar.setBounds(10, 207, 108, 32);
		
		final Button btnVerCompetencia = new Button(shlBuscarCompetencias, SWT.NONE);
		btnVerCompetencia.setText("Ver detalles");
		btnVerCompetencia.setEnabled(false);
		btnVerCompetencia.setBounds(649, 287, 108, 32);
		btnVerCompetencia.addSelectionListener(new SelectionAdapter() {
			@Override
			public void widgetSelected(SelectionEvent e) {
				shlBuscarCompetencias.setVisible(false);
				
				try {
					CU020 verCompetencia = new CU020(idCompetencia.get(table.getSelectionIndex()), myself);
					verCompetencia.open();
				}
				catch (Exception ex) {
					ex.printStackTrace();
				}
			}
		});
		
		table = new Table(shlBuscarCompetencias, SWT.BORDER | SWT.FULL_SELECTION);
		table.setBounds(10, 287, 604, 193);
		table.setHeaderVisible(true);
		table.setLinesVisible(true);
		table.addSelectionListener(new SelectionAdapter() {
			public void widgetSelected(SelectionEvent e) {
				if (table.getSelectionIndex() != -1) {
					btnVerCompetencia.setEnabled(true);
				}
			}
		});
		
		TableColumn tblclmnNombreCompetencia = new TableColumn(table, SWT.NONE);
		tblclmnNombreCompetencia.setWidth(150);
		tblclmnNombreCompetencia.setText("Nombre competencia");
		
		TableColumn tblclmnDeporte = new TableColumn(table, SWT.NONE);
		tblclmnDeporte.setWidth(150);
		tblclmnDeporte.setText("Deporte");
		
		TableColumn tblclmnModalidad = new TableColumn(table, SWT.NONE);
		tblclmnModalidad.setWidth(150);
		tblclmnModalidad.setText("Modalidad");
		
		TableColumn tblclmnEstado = new TableColumn(table, SWT.NONE);
		tblclmnEstado.setWidth(150);
		tblclmnEstado.setText("Estado");
		
		llenarTabla();
		
		Label lblResultados = new Label(shlBuscarCompetencias, SWT.NONE);
		lblResultados.setBounds(10, 257, 150, 15);
		lblResultados.setText("Resultados de la b\u00FAsqueda:");
		
		Button btnSalir = new Button(shlBuscarCompetencias, SWT.NONE);
		btnSalir.setText("Salir");
		btnSalir.setBounds(649, 519, 108, 32);
		btnSalir.addSelectionListener(new SelectionAdapter() {
			@Override
			public void widgetSelected(SelectionEvent e) {
				shlBuscarCompetencias.close();
			}
		});
		
		Button btnNueva = new Button(shlBuscarCompetencias, SWT.NONE);
		btnNueva.setText("Nueva");
		btnNueva.setBounds(649, 337, 108, 32);
		btnNueva.addSelectionListener(new SelectionAdapter() {
			@Override
			public void widgetSelected(SelectionEvent e) {
				shlBuscarCompetencias.setVisible(false);
				
				try {
					CU004 altaCompetencia = new CU004(usuario.getId(), myself);
					altaCompetencia.open();
				}
				catch (Exception ex) {
					ex.printStackTrace();
				}
			}
		});
		
		shlBuscarCompetencias.open();
		shlBuscarCompetencias.layout();
		while (!shlBuscarCompetencias.isDisposed()) {
			if (!display.readAndDispatch()) {
				display.sleep();
			}
		}
	}

	public void llenarTabla() {
		table.removeAll();
		idCompetencia.clear();
		
		DAOUsuario daoUsuario = new DAOUsuario();
		usuario = daoUsuario.getUsuario(usuario.getId());
		
		List<Competencia> competencias = usuario.getCompetencias();
		for (Competencia c : competencias) {
			TableItem tableItem = new TableItem(table, SWT.NONE);
			tableItem.setText(new String[] {c.getNombre(), c.getDeporte().getNombre(),
					c.getModalidadDeCompetencia().getDescripcion(), c.getEstadoDeCompetencia().getNombre()});
			idCompetencia.add(c.getId());
		}
	}

	/**
	 * Create contents of the window.
	 */
	protected void createContents() {
		shlBuscarCompetencias = new Shell(SWT.CLOSE | SWT.TITLE | SWT.MIN);
		shlBuscarCompetencias.setMinimumSize(new Point(800, 600));
		shlBuscarCompetencias.setSize(450, 300);
		shlBuscarCompetencias.setText("Buscar competencias");
		shlBuscarCompetencias.addListener(SWT.Close, new Listener() {
			public void handleEvent(Event event) {
				pantallaAnterior.shlPrincipal.setVisible(true);
				pantallaAnterior.shlPrincipal.forceFocus();
			}
		});
		
		text = new Text(shlBuscarCompetencias, SWT.BORDER);
		text.setBounds(166, 43, 219, 21);
		
		Label lblFiltros = new Label(shlBuscarCompetencias, SWT.NONE);
		lblFiltros.setBounds(10, 15, 55, 15);
		lblFiltros.setText("Filtros:");
		
		Button btnNombreDeCompetencia = new Button(shlBuscarCompetencias, SWT.CHECK);
		btnNombreDeCompetencia.setBounds(10, 45, 150, 16);
		btnNombreDeCompetencia.setText("Nombre de competencia:");
		
		Button btnDeporte = new Button(shlBuscarCompetencias, SWT.CHECK);
		btnDeporte.setBounds(10, 85, 60, 16);
		btnDeporte.setText("Deporte:");
		
		Combo combo = new Combo(shlBuscarCompetencias, SWT.READ_ONLY);
		//combo.setItems(new String[] {"B\u00E1squetbol", "F\u00FAtbol", "Handbol", "Tenis"});
		combo.setBounds(76, 83, 128, 23);

	}
}
